The Internet has grown at a remarkable pace, and has become firmly entrenched in nearly all aspects of society. Whereas the Internet initially was limited to purely academic and government endeavors, the Internet has now become an important avenue of commercial activity, not to mention an important source of educational, commercial and entertainment-related information. Moreover, in addition to simply operating as a source of information, the Internet provides a mechanism for bringing together individuals and entities from across the globe. As an example, for business enterprises, the Internet provides the ability to interact electronically with customers, as well as suppliers, distributors and other business partners. Even in non-commercial areas, the Internet enables individuals sharing common interests and avocations to interact and share information with one another.
Of particular importance, the Internet often provides business enterprises with the ability to interact electronically with their customers to provide a number of value added services for those customers.
For example, various Internet-based technologies have been developed to enhance the product support services provided by businesses to their customers. Perhaps not unexpectedly, the manufacturers, developers and other providers of computer-related products such as computers, peripherals, networking equipment, computer software, and other hardware and/or software products have taken the lead in utilizing Internet technologies to enhance the product support services they provide for their customers.
Conventional Internet-based product support technologies have focused primarily on providing on-line access to product support information, as well as providing on-line access to downloadable software patches, service packs, drivers, updates and the like subsequent to release of a computer-related product. In the former instance, users are often permitted to search knowledge bases to locate information about particular problems experienced by customers, as well as potential solutions, workarounds, and the like. In the latter instance, users may either be required to periodically check a manufacturer's website for new updates, or in the alternative, a manufacturer may find an update sufficiently important to warrant notifying customers of the presence of new updates via email or regular mail.
Still other manufacturers support on-line “communities” such as news groups or forums, so that users can interact with one another (or even with a manufacturer's product support personnel) to ask questions and obtain solutions. Such communities are also typically searchable by users so that the solutions to particular questions can be found without having to pose the questions to the communities anew. In still other environments, real-time assistance, such as interactive chat sessions, may be used to enable customers to obtain useful information from a product manufacturer.
While conventional product support technologies often provide some degree of assistance to customers, in many instances the manual process of searching knowledge bases, downloading patches, reconfiguring systems, etc., becomes excessively burdensome. Furthermore, the potential problems experienced by customers continue to increase in both number and complexity, often necessitating even more manual frequent interaction with product support technologies.
In particular, many computer systems incorporate numerous hardware and software components, many of which are supplied by multiple vendors. And with the advent of “open” systems, which permit the products of third party vendors to be installed into a particular manufacturer's computer systems, often without any certification or explicit acceptance by the manufacturer, many manufacturers are simply unable to adequately test all permutations and combinations of hardware and software solutions that customers may have installed in their particular installations. Adding to this difficulty are the relatively short product development cycles imposed by the marketplace, which effectively ensure that at least some incompatibilities will arise subsequent to any major release of a computer-related product.
To address some of these difficulties, various types of computer software have been utilized to better automate the provision of product support. For example, some software vendors utilize remote control software that allows product support personnel to remotely connect to a customer's computer and permit the personnel to remedy any problems therewith, e.g., by perusing and correcting configuration settings on a customer's computer.
As another example, automated update programs have been developed for the purpose of analyzing a particular installation to determine what current software is installed, comparing this information with a database of known updates to that software, and then automating the download and installation of any uninstalled updates. In some environments, the update programs are implemented using intelligent agents that are dispatched, or transmitted, to a particular customer's installation.
An intelligent agent, in general, is configured to operate much like software-implemented “assistant” to automate and simplify certain tasks in a way that hides its complexity from a user. An intelligent agent is typically characterized by the concept of delegation, where a user, or client, entrusts an agent to handle tasks with at least a certain degree of autonomy. Intelligent agents operate with varying degrees of constraints depending upon the amount of autonomy delegated to them by a user.
Intelligent agents may also have differing capabilities in terms of intelligence, mobility, and agency. Intelligence is generally the amount of reasoning and decision making that an agent possesses. This intelligence can be as simple as following a predefined set of rules, or as complex as learning and adapting based upon a user's objectives and the agent's available resources. An intelligent agent's intelligence or skill as applied to a specific field or function is often referred to as the domain knowledge for that agent.
Some intelligent agents are also characterized as being “mobile”, by virtue of possessing the ability to be passed through a network and execute on different computer systems. Thus, while some agents may be designed to stay on one computer system and may never be passed to different machines, other agents may be mobile in the sense that they are designed to be passed from computer to computer while performing tasks at different stops along the way. To facilitate the distribution of agents and their interaction, significant development work has been directed toward standardized agent communities, where agents are configured to execute on standardized agent “platforms” and communicate according to standardized messaging protocols.
Agents have traditionally found a number of uses in a wide variety of applications, including systems and network management, mobile access and management, information access and management, collaboration, messaging, workflow and administrative management, and adaptive user interfaces. Another important use for agents is in electronic commerce, where an agent may be configured to seek out other parties such as other users, computer systems and agents, conduct negotiations on behalf of their client, and enter into commercial transactions.
Despite these usages of intelligent agents, in the field of product support, intelligent agents have yet to find widespread acceptance outside of the relatively narrow area of automating software updates. Of note, software updates most often result from some prior identification of various errors that require correction, followed by resolution of such problems through the development of new program code that corrects such errors. To date, the identification of errors often results from customer complaints or questions, which is typically collected manually by product support personnel in connection with resolving customer problems. It is often only after individual customers raise issues, and these issues are individually resolved by product support personnel, that global solutions to the issues are created and then distributed to other customers. Thus, even though the actual download of software updates may be somewhat automated in some environments, the underlying problem determination, problem source identification, and problem resolution steps that ultimately result in the generation of such software updates are still predominantly manual and labor-intensive processes.
Given the ever-increasing complexity of computer systems, components and software, it is anticipated that product support will continue to place an increasingly greater burden on manufacturers and developers of many computer-related products, thus driving up overhead and cutting into margins. A need therefore exists for utilizing increased automation in connection with the provision of product support, particularly in the areas of problem determination, identification and resolution. It is further anticipated that increased usage of intelligent agents in the provision of product support can address many of the burdens and inefficiencies that result from conventional product support efforts, and thus a need also exists for a manner of facilitating the penetration of intelligent agents into product support environments.